package com.netrust.cmsx.utils.tree;

import java.util.ArrayList;
import java.util.List;

public class BuildTree {
	public static <T> Tree<T> build(List<Tree<T>> nodes) {

		if (nodes == null) {

			return null;
		}

		List<Tree<T>> topNodes = new ArrayList<Tree<T>>();

		for (Tree<T> children : nodes) {

			String pid = children.getParentId();

			if (pid == null) {

				topNodes.add(children);
				continue;
			}

			for (Tree<T> parent : nodes) {

				String id = parent.getId();

				if (id != null && id.equals(pid)) {

					parent.getChildren().add(children);
					children.setParent(true);
					parent.setChildren(true);
					continue;
				}
			}
		}

		Tree<T> root = new Tree<T>();

		if (topNodes.size() == 0) {
			root = null;
			// root = topNodes.get(0);
		} else {
			root.setId("-1");
			root.setParentId(null);
			root.setParent(false);
			root.setChildren(true);
			root.setChecked(true);
			root.setChildren(topNodes);
			root.setText("顶级节点");
		}

		return root;
	}

}
